package in.lib.holder; import in.lib.adapter.PrivateMessageAdapter; import in.lib.annotation.InjectView; import in.lib.holder.base.MessageHolder; import in.lib.manager.SettingsManager; import in.lib.utils.Views; import in.model.PrivateMessage; import in.obj.annotation.Annotation; import in.obj.annotation.Annotation.Type; import in.obj.annotation.ImageAnnotation; import in.obj.annotation.VideoAnnotation; import in.rob.client.MainApplication; import in.rob.client.R; import android.graphics.Bitmap; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; /** * View holder for list item which holds references * to the views so its like uber quick * @author Robin */ public class PrivateMessageHolder extends MessageHolder { @InjectView(R.id.location_image) public ImageView locationImage; @InjectView(R.id.is_convo) public ImageView isInConvo; @InjectView(R.id.star) public ImageView starButton; @InjectView(R.id.repost) public ImageView repostButton; @InjectView(R.id.more) public ImageView moreButton; @InjectView(R.id.media_image) public ImageView media; @InjectView(R.id.delete) public ImageView deleteButton; public PrivateMessageHolder(View convertView) { super(convertView); Views.inject(this, convertView); } @Override public void onViewDestroyed(View v) { super.onViewDestroyed(v); if (media != null) { ImageLoader.getInstance().cancelDisplayTask(media); media.setImageBitmap(null); } if (locationImage != null) { ImageLoader.getInstance().cancelDisplayTask(locationImage); locationImage.setImageBitmap(null); } } /** * Method to use when populating a view's members with the * data from message. * @param inflater The inflater to use when creating new views * @param holder The holder containing the views * @param post The post object */ public void populate(PrivateMessage message, PrivateMessageAdapter adapter) { super.populate(message, adapter); mediaContainer.setVisibility(View.GONE); if (message.getPoster().isYou()) { deleteButton.setVisibility(View.VISIBLE); } else { deleteButton.setVisibility(View.GONE); } boolean block = SettingsManager.isInlineImagesEnabled(); block &= (!SettingsManager.isInlineImageWifiEnabled() || (SettingsManager.isInlineImageWifiEnabled() && MainApplication.isOnWifi())); block &= media != null; if (block) { String imageToLoad = ""; boolean centerMessage = adapter.getCenter() == message; if (message.getAnnotations() != null) { if (message.getAnnotations().get(Type.IN_ORDER) != null && message.getAnnotations().get(Type.IN_ORDER).size() > 0) { Annotation image = message.getAnnotations().get(Type.IN_ORDER).get(0); imageToLoad = image.getPreviewUrl(); if (!TextUtils.isEmpty(imageToLoad)) { ImageLoader.getInstance().displayImage(imageToLoad, media, (centerMessage ? MainApplication.getCenterPostMediaOptions() : MainApplication.getInlineMediaImageOptions()), new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { mediaProgress.setVisibility(View.GONE); } @Override public void onLoadingStarted(String imageUri, View view) { mediaProgress.setVisibility(View.VISIBLE); } }); media.setTag(R.id.TAG_ENTITY, image); media.setTag(R.id.TAG_IMAGE_URL, imageToLoad); if (image.getClass() == ImageAnnotation.class) { videoMediaButton.setVisibility(View.GONE); } if (image.getClass() == VideoAnnotation.class || image.getPreviewUrl().endsWith(".gif")) { videoMediaButton.setVisibility(View.VISIBLE); } mediaContainer.setVisibility(View.VISIBLE); } } } } } }